package calculator;

import java.util.ArrayList;

import calculator.equationnodes.EquationNode;

/*
 * EquationStack.java
 * Author: Ben McCormick
 * Written: Jan 11 2011
 * Last Edited: May 16 2011
 * Ben McCormick 2011
 * This file is part of The Eikona Project .
 *    Copyright 2011 Ben McCormick
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *    
 *    http://www.apache.org/licenses/LICENSE-2.0
 *    
 *     Unless required by applicable law or agreed to in writing, software
 *     distributed under the License is distributed on an "AS IS" BASIS,
 *     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *     See the License for the specific language governing permissions and
 *     limitations under the License.
 */

/**
 * A class to represent a stack for equation Nodes 
 * @author Ben McCormick
 *
 */
public class EquationStack {
	
	private ArrayList<EquationNode> stack;
	
	/** A standard constructor */
	public EquationStack()
	{
		stack = new ArrayList<EquationNode>();
	}
	
	/** Pops the top item off the stack */
	public EquationNode pop()
	{
		return stack.remove(stack.size()-1);
	}
	
	/** Pushes an item onto the stack */
	public void push(EquationNode node)
	{
		stack.add(node);
	}
	
	/** Lets the user view the top item on the stack without using it */
	public EquationNode peek()
	{
		EquationNode node = stack.get(stack.size()-1);
		return node;  //Potentially insecure?
	}
	
	/** Returns true if the stack is empty, false otherwise */
	public boolean isEmpty()
	{
		return stack.isEmpty();
	}
	
	/**Returns a String representation of the stack */
	public String toString()
	{
		return stack.toString();
	}
	

}
